﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Tworzenie_Grafiku
{
    /// <summary>
    /// Interaction logic for DokumentKoszt.xaml
    /// </summary>
    public partial class DokumentKoszt : Window
    {
        List<String> rodzaje_dokumentow = new List<String>();
        List<PolaKoszty> koszty = new List<PolaKoszty>();
        String id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, stanowisko_uzytkownika;

        public DokumentKoszt(string id, string imie, string nazwisko, string stanowisko)
        {
            InitializeComponent();
            id_uzytkownika = id;
            imie_uzytkownika = imie;
            nazwisko_uzytkownika = nazwisko;
            stanowisko_uzytkownika = stanowisko;
            rodzaje_dokumentow.Add("Sprzedaż");
            rodzaje_dokumentow.Add("Koszty");
            rodzaje_dokumentow.Add("Pozostałe");
            Typ.ItemsSource = rodzaje_dokumentow;
            Typ.SelectedItem = "Koszty";
            for (int i = 0; i < 7; i++)
            {
                koszty.Add(new PolaKoszty(new TextBox(), new TextBox(), new TextBox(), new TextBox(), new TextBox(), new TextBox()));
                koszty[i].getLp().Text = Convert.ToString(i + 1) + ".";
                koszty[i].getLp().IsReadOnly = true;
                koszty[i].getLp().Width = 44;
                koszty[i].getOpis().Width = 198;
                koszty[i].getIlosc().Width = 50;
                koszty[i].getCena().Width = 98;
                koszty[i].getVat().Width = 81;
                koszty[i].getWartcalk().Width = 141;
                koszty[i].getWartcalk().IsReadOnly = true;
                koszty[i].getIlosc().TextChanged += new TextChangedEventHandler(wart_TextChanged);
                koszty[i].getCena().TextChanged += new TextChangedEventHandler(wart_TextChanged);
                koszty[i].getVat().TextChanged += new TextChangedEventHandler(wart_TextChanged);
                panel.Children.Add(koszty[i].getLp());
                panel.Children.Add(koszty[i].getOpis());
                panel.Children.Add(koszty[i].getIlosc());
                panel.Children.Add(koszty[i].getCena());
                panel.Children.Add(koszty[i].getVat());
                panel.Children.Add(koszty[i].getWartcalk());
            }
        }

        private void Typ_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (Typ.SelectedItem.ToString().Equals("Sprzedaż", StringComparison.Ordinal))
            {
                new DokumentSprzedaz(id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, stanowisko_uzytkownika).Show();
                this.Close();
            }
            else if (Typ.SelectedItem.ToString().Equals("Pozostałe", StringComparison.Ordinal))
            {
                new DokumentInne(id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, stanowisko_uzytkownika).Show();
                this.Close();
            }
        }

        private void zapisz_Click(object sender, RoutedEventArgs e)
        {
            LINQtoDBDataContext db = new LINQtoDBDataContext();
            DokumentKosztow row = new DokumentKosztow()
            {
                Numer_faktury = nrfaktury.Text,
                Nazwa_kontrahenta = nazwakontr.Text,
                Miasto_kontrahenta = miastokontr.Text+" "+kodkontr1.Text+"-"+kodkontr2.Text,
                Adres_kontrahenta = adreskontr.Text,
               Data = data_fakt.Text,
               Id_pracownika = Convert.ToInt32(id_uzytkownika)
            };
            db.DokumentKosztows.InsertOnSubmit(row);
            db.SubmitChanges();
            foreach (PolaKoszty k in koszty)
            {
                if (k.getCena().Text != "")
                {
                    Material mrow = new Material()
                    {
                        Nazwa = k.getOpis().Text,
                        Cena_netto = k.getCena().Text,
                        Vat = k.getVat().Text,
                        Ilosc = Convert.ToInt32(k.getIlosc().Text),
                        Id_dokumentu = nrfaktury.Text
                    };
                    db.Materials.InsertOnSubmit(mrow);
                }
            }
            db.SubmitChanges();
            nrfaktury.Text = "";
            data_fakt.Text = "";
            nazwakontr.Text = "";
            adreskontr.Text = "";
            miastokontr.Text = "";
            kodkontr1.Text = "";
            kodkontr2.Text = "";
            suma_calk.Text = "";
            foreach (PolaKoszty k in koszty)
            {
                k.getOpis().Text = "";
                k.getIlosc().Text = "";
                k.getCena().Text = "";
                k.getVat().Text = "";
                k.getWartcalk().Text = "";
            }
        }

        private void anuluj_Click(object sender, RoutedEventArgs e)
        {
            new Dokumenty(id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, stanowisko_uzytkownika).Show();
            this.Close();
        }

        private void wart_TextChanged(object sender, TextChangedEventArgs e)
        {
            foreach (PolaKoszty k in koszty)
            {
                if (k.getCena().GetType() == sender.GetType())
                    k.obliczWart();
            }
            double suma = 0;
            foreach (PolaKoszty k in koszty)
            {
                if (k.getWartcalk().Text != "")
                    suma += Convert.ToDouble(k.getWartcalk().Text);
            }
            suma_calk.Text = Convert.ToString(suma);
        }
    }
}
